package cn.iocoder.yudao.module.crossborder.srm.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 合同信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 合同信息 DTO")
@Data
public class ContractDTO {

    @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "合同号", requiredMode = Schema.RequiredMode.REQUIRED, example = "CONTRACT001")
    private String contractNo;

    @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "电子产品采购合同")
    private String contractName;

    @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long supplierId;

    @Schema(description = "供应商名称", example = "优质供应商有限公司")
    private String supplierName;

    @Schema(description = "合同类型", example = "1")
    private Integer contractType;

    @Schema(description = "合同状态", example = "1")
    private Integer status;

    @Schema(description = "合同金额", example = "1000000.00")
    private BigDecimal contractAmount;

    @Schema(description = "已执行金额", example = "500000.00")
    private BigDecimal executedAmount;

    @Schema(description = "货币代码", example = "CNY")
    private String currency;

    @Schema(description = "签订时间")
    private LocalDateTime signTime;

    @Schema(description = "生效时间")
    private LocalDateTime effectiveTime;

    @Schema(description = "到期时间")
    private LocalDateTime expireTime;

    @Schema(description = "付款条件", example = "30天付款")
    private String paymentTerms;

    @Schema(description = "交货条件", example = "FOB上海")
    private String deliveryTerms;

    @Schema(description = "质量标准", example = "符合国家标准")
    private String qualityStandards;

    @Schema(description = "违约条款", example = "延期交货按日收取违约金")
    private String penaltyClause;

    @Schema(description = "甲方签字人", example = "张三")
    private String partyASigner;

    @Schema(description = "乙方签字人", example = "李四")
    private String partyBSigner;

    @Schema(description = "合同文件路径", example = "/contracts/CONTRACT001.pdf")
    private String contractFilePath;

    @Schema(description = "法务审核人", example = "王五")
    private String legalReviewer;

    @Schema(description = "法务审核时间")
    private LocalDateTime legalReviewTime;

    @Schema(description = "法务审核意见", example = "合同条款符合法律要求")
    private String legalReviewComment;

    @Schema(description = "备注", example = "重要合同，需重点关注执行情况")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
